Apparatus and method for implementing a linearly approximated Log MAP algorithm and especially an apparatus and method for implementing a linearly approximated Log MAP algorithm for turbo decoding and turbo equalization.
Turbo Coding (i.e.xe2x80x94TC) is used for error control coding in digital communications and signal processing. The following references give some examples of various implementations of the TC: xe2x80x9cNear Shannon limit error correcting coding and decoding: turbo-codesxe2x80x9d, by Berrou, Glavieux, Thitimajshima, IEEE International Conference of Communication. Geneva Switzerland, pp. 1064-1070, May 1993; xe2x80x9cImplementation and Performance of a Turbo/MAP Decoderxe2x80x9d, Pietrobon, International Journal of Satellite Communication; xe2x80x9cTurbo Codingxe2x80x9d, Heegard and Wicker, Kluwer Academic Publishers 1999.
MAP algorithm and soft output Viterbi algorithm (SOVA) are Soft Input Soft Output (i.e.xe2x80x94SISO) decoding algorithms that have gained wide acceptance in the area of communications. Both algorithms are mentioned in U.S. Pat. No. 5,933,462 of Viterbi et al.
The TC has gained wide acceptance in the area of communications, such as in cellular networks, modems, and satellite communications. Some turbo encoders consists of two parallel-concatenated systematic convolutional encoders separated by a random interleaver. A turbo decoder has two soft-in soft-out (SISO) decoders. The output of the first SISO is coupled to the input of the second SISO via a first interleaver, while the output of the second SISO is coupled to an input of the first SISO via a feedback loop that includes a deinterleaver.
A common SISO decoder uses either a maximum a posteriori (i.e.xe2x80x94MAP) decoding algorithm or a Log MAP decoding algorithm. The latter algorithm is analogues to the former algorithm but is performed in the logarithmic domain. Another common decoding algorithm is the max log MAP algorithm. The max log MAP is analogues to the log MAP but the implementation of the former involves an addition of correction factor. Briefly, the MAP finds the most likely information bit to have been transmitted in a coded sequence.
The output signals of a convolutional encoder are transmitted via a channel and are received by a receiver that has a turbo decoder. The channel usually adds noise to the transmitted signal.
During the decoding process a trellis of the possible states of the coding is defined. The trellis includes a plurality of nodes (states), organized in T stages, each stage has N=2sup(Kxe2x88x921) nodes, whereas T being the number of received samples taken into account for evaluating which bit was transmitted from a transmitter having the convolutional encoder and K is the constraint length of the code used for encoding. Each stage is comprised of states that represent a given time. Each state is characterized by a forward state metric, commonly referred to as alpha (xcex1 or a) and by a backward state metric, commonly referred to as beta (xcex2 or b). Each transition from a state to another state is characterized by a branch metric, commonly referred to as gamma (xcex3).
Alphas, betas and gammas are used to evaluate a probability factor that indicates which signal was transmitted. This probability factor is commonly known as lambda (A). A transition from a stage to an adjacent stage is represented by a single lambda.
A function MAX*(a(n),b(n)) is frequently used when alphas, betas and gammas are calculated. Conveniently, said calculation involves in a comparison of a(n) and b(n). Said elements a(n) and b(n) usually have real values. MAX*(a(n), b(n)) equals MAX(a(n), b(n))+Log(1+EXP{xe2x88x92|a(n)xe2x88x92b(n)|}). The first portion of said equation is usually calculated. The calculation of the second portion is relatively complicated and time consuming. Usually an approximation of said second portion is calculated. Said approximation is either a linear approximation, a step approximation or a multi step approximation. A linear approximation method is described in xe2x80x9cLinearity Approximated for Log-MAP Algorithms for Turbo Decodingxe2x80x9d, by Jung-Fu Cheng and Tony Ottoson. Said method suggests to approximate the second portion by a the following functions: MAX{0, (Cxe2x88x92|a(n)xe2x88x92b(n)|/4} and by: MAX{0, (Cxe2x88x92|a(n)xe2x88x92b(n)|/8}. Both estimations provide relatively poor performances when |a(n)xe2x88x92b(n)| is relatively small, and their implementation is relatively time consuming.
There is a need for providing a fast and high performance apparatus and method for implementing a linearly approximated Log MAP algorithm.